#!/bin/bash
#第三天：循环结构与变量作用域
#知识点讲解：
#今天我们将学习Shell脚本中的循环结构以及变量的作用域。这些概念对于编写能够执行重复任务的脚本非常重要。
#循环结构：在Shell脚本中，我们有多种方式来实现循环逻辑。最常用的两种是for循环和while循环。
#for循环通常用于遍历一个列表或一系列值。
#while循环则会持续执行一段代码，直到给定条件不再满足为止。
#变量作用域：在Shell脚本中，默认情况下变量都是全局的，这意味着它们可以在脚本的任何地方被访问。
#然而，当你在一个函数内部定义变量时，如果你想要限制这个变量的作用范围仅限于该函数内，可以使用local关键字。
#示例代码：
#首先，我们来看一个简单的for循环示例，它将遍历数字1到5，并打印每个数字。
for i in {1..5}
do
   echo "数字: $i"
done
#接下来是一个while循环的例子，它会从1数到5：
i=1
while [ $i -le 5 ]
do
   echo "数字: $i"
   ((i++))
done
#最后，让我们看看如何使用局部变量。这里有一个例子，演示了如何在函数内部定义一个局部变量：
function show_local_variable() {
    local var="我是局部变量"
    echo $var
}
show_local_variable
echo $var  # 这里将会输出空值，因为var是在函数内部作为局部变量声明的
#练习：
#现在，请尝试自己编写一个Shell脚本，要求如下：
#在脚本中使用while循环实现一个倒计时程序，从数字5开始倒数至1，每秒输出一个数字。
#当倒计时结束时，输出“发射！”。
#使用sleep命令来实现每秒暂停的效果。
#在脚本中使用while循环实现一个倒计时程序，从数字5开始倒数至1，每秒输出一个数字。
#当倒计时结束时，输出“发射！”。
#使用sleep命令来实现每秒暂停的效果。
q=5
while [ $q -ge 1 ]
do    
   echo "数字: $q"
   sleep 1
   ((q--))
done
echo "发射！"

function countdown() {
    local q=5  # 声明为局部变量
    while [ $q -ge 1 ]
    do    
       echo "数字: $q"
       sleep 1
       ((q--))
    done
    echo "发射！"
}

countdown  # 调用函数